#!/bin/bash

# 获取当前脚本的目录
DEFAULT_DIR="$(dirname "$0")"

# 提示用户输入要扫描的文件夹
read -p "请输入要扫描的文件夹路径 (回车默认为当前脚本目录): " input_dir

# 如果用户没有输入，使用默认目录
if [ -z "$input_dir" ]; then
    SCAN_DIR="$DEFAULT_DIR"
else
    SCAN_DIR="$input_dir"
fi

# 检查目录是否存在
if [ ! -d "$SCAN_DIR" ]; then
    echo "错误: 目录 '$SCAN_DIR' 不存在。"
    exit 1
fi

echo "正在扫描目录: $SCAN_DIR"

# 获取指定目录及子目录下的所有 sh 脚本，排除自身和 node_modules 目录
SCRIPTS=($(find "$SCAN_DIR" -type f -name "*.sh" ! -name "$(basename "$0")" ! -path "*/node_modules/*" | sort))

# 检查是否找到任何脚本
if [ ${#SCRIPTS[@]} -eq 0 ]; then
    echo "在目录 '$SCAN_DIR' 中没有找到其他 sh 脚本。"
    exit 0
fi

# 显示脚本列表供用户选择
echo "请选择要执行的脚本："
for i in "${!SCRIPTS[@]}"; do
    echo "$((i+1))) ${SCRIPTS[$i]}"
done

# 读取用户输入
read -p "输入脚本的编号: " choice

# 检查用户输入是否有效
if ! [[ "$choice" =~ ^[0-9]+$ ]] || [ "$choice" -lt 1 ] || [ "$choice" -gt ${#SCRIPTS[@]} ]; then
    echo "无效的选择。"
    exit 1
fi

# 执行用户选择的脚本
SELECTED_SCRIPT="${SCRIPTS[$((choice-1))]}"
echo "执行脚本: $SELECTED_SCRIPT"
bash "$SELECTED_SCRIPT"
